home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / enigma / earcd / comm / comm5 / nwsbrkr5.lha / Reader / NewsBreaker / src / ums / Login.c < prev    next >
C/C++ Source or Header  |  1996-12-08  |  2KB  |  70 lines

  1. BOOL
  2. Login ()
  3. {
  4.   BOOL okay = TRUE;        /* returncode */
  5.  
  6. /*
  7.    args:
  8.    Eine Struktur 'args' für DOS/ReadArgs() definieren:
  9.    Diese Struktur wird von ReadArgs() ausgefüllt: mit den Argumenten, die
  10.    Anwender in der Shell eingetippt hat. Aus der Shell-Eingabe "Newsbreaker
  11.    USER sysop PASSWORD geheim" bastelt ReadArgs einen Pointer auf "sysop"
  12.    in das Strukturelement user. Und ein Zeiger auf String "geheim" wird in
  13.    struct.passwd geschrieben.
  14.  
  15.    Die Struktur args wird zur Intitalisierung komplett geNULLT.
  16.  
  17.    todo: Vorgabe (default) für server
  18.  */
  19.  
  20.   static struct
  21.     {
  22.       char *user;
  23.       char *passwd;
  24.       char *server;
  25.     }
  26.   args =
  27.   {
  28.     NULL, NULL, NULL
  29.   };
  30.  
  31.   struct RDArgs *rda;
  32.  
  33. /*
  34.    CLI Start: Kommandozeile mit DOS/ReadArgs() auswerten. Der erste Parameter
  35.    ist die Schablone (Template) für die Steuerung von ReadArgs, abhängig
  36.    von dem Inhalt des Template werden Daten ab Adresse & args geschrieben.
  37.    Das sind: mindestens (weil "/A" Flag gesetzt) Username und Passwort,
  38.    optional Server.
  39.  */
  40.  
  41. #define TEMPLATE "USER/A,PASSWORD/A,SERVER"
  42.  
  43.   rda = ReadArgs (TEMPLATE, (LONG *) & args, NULL);
  44.  
  45.   /* War ReadArgs erfolgreich? */
  46.   if (rda)
  47.     {
  48.       /* erzeuge 3x ein String-Duplikat. Setze STRPTR auf seine Adresse: */
  49.       user = strdup (args.user ? args.user : "");
  50.       if (!user) user = "";
  51.  
  52.       passwd = strdup (args.passwd ? args.passwd : "%");
  53.       if (!passwd) passwd = "%";
  54.  
  55.       server = strdup (args.server);
  56.       if (!server) server = "default";
  57.     }
  58.   else
  59.     {
  60.       okay = FALSE;
  61.       ShowError ("ReadArgs() meldet Fehler.");
  62.     }
  63.  
  64.   /* Free ReadArgs Resourcen */
  65.   if (rda)
  66.     FreeArgs (rda);
  67.  
  68.   return (okay);
  69. }
  70.